public class Test {
    public static void hanota(int n,char pos1,char pos2,char pos3) {//盘子数，起始位置，中转位置，目的位置
        if (n == 1){
            move(pos1,pos3);//在一个盘子的情况下，将其从A挪到C
            return;
        }
        hanota((n-1),pos1,pos3,pos2);//先将n-1个盘子借助pos3移到pos2
        move(pos1,pos3);//移走n-1个盘子后还剩一个在pos1上，将其移到pos3
        hanota(n-1,pos2,pos1,pos3);//最后将在pos2上的n-1个盘子借助pos1移到pos3
    }

    public static void move(char a,char b) {
        System.out.print(a+"->"+b+" ");
    }

    public static void main(String[] args) {
        hanota(5,'A','B','C');//一个盘子，A,B,C三根柱子
    }
}
